package com.bjpowernode.query;

import jakarta.validation.constraints.*;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 前端要验证，后端也要验证，而且后端验证更重要，因为前端他可以绕过你的前端验证，所以后端验证非常重要
 */
@Data
public class ClueQuery {

    /**
     * 主键，自动增长，线索ID
     */
    private Integer id;

    /**
     * 线索所属人ID
     */
    @NotNull(message = "请选择负责人")
    private Integer ownerId;

    /**
     * 活动ID
     */
    private Integer activityId;

    /**
     * 姓名
     */
    @Pattern(regexp = "^[\\u4e00-\\u9fa5]+$", message = "姓名必须是中文汉字")
    private String fullName;

    /**
     * 称呼
     */
    private Integer appellation;

    /**
     * 手机号
     */
    @NotBlank(message = "手机号码不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式有误")
    private String phone;

    /**
     * 微信号
     */
    private String weixin;

    /**
     * QQ号
     */
    @Pattern(regexp = "^\\d+$", message = "QQ号码必须是数字")
    private String qq;

    /**
     * 邮箱
     */
    @Pattern(regexp = "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$", message = "邮箱格式有误")
    private String email;

    /**
     * 年龄
     */
    @DecimalMax(value = "150", message = "年龄必须为0-150之间的整数")
    private Integer age;

    /**
     * 职业
     */
    private String job;

    /**
     * 年收入
     */
    @Digits(integer = 12, fraction = 2, message = "年收入必须是整数或者两位小数")
    private BigDecimal yearIncome;

    /**
     * 地址
     */
    private String address;

    /**
     * 是否需要贷款（0不需要，1需要）
     */
    private Integer needLoan;

    /**
     * 意向状态
     */
    private Integer intentionState;

    /**
     * 意向产品
     */
    private Integer intentionProduct;

    /**
     * 线索状态
     */
    private Integer state;

    /**
     * 线索来源
     */
    private Integer source;

    /**
     * 线索描述
     */
    @Size(min = 5, max = 255, message = "线索描述长度为5-255个字符")
    private String description;

    /**
     * 下次联系时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date nextContactTime;
}